Skip to content

[test](be) Migrate variant index storage debugpoint tests#64348

Draft
eldenmoon wants to merge 8 commits into
apache:masterfrom
eldenmoon:branch-variant-gtest-framework-master
Draft

[test](be) Migrate variant index storage debugpoint tests#64348
eldenmoon wants to merge 8 commits into
apache:masterfrom
eldenmoon:branch-variant-gtest-framework-master

Conversation

@eldenmoon

@eldenmoon eldenmoon commented Jun 10, 2026

Copy link
Copy Markdown
Member

What problem does this PR solve?

Issue Number: None

Related PR: #64205

Problem Summary: Build a reusable BE index-storage unit-test fixture and migrate the Variant variant_p0 debugpoint/index/compaction coverage that belongs at storage-reader/writer level into focused unit tests. The migrated coverage includes array inverted-index writer debugpoint checks, Variant path index lifecycle and compaction coverage, field-pattern typed index coverage for cumulative/full compaction, common expression pushdown for IS NULL / IS NOT NULL, and array_contains common-expression index filtering. Variant and non-Variant coverage is split into independent test files, with shared rowset write/read/reload/compact/index-probe helpers kept in index_storage_test_util.

The bloom_filter_must_filter_data profile/debugpoint portion in variant_p0/predefine/test_types_with_indexes_profile.groovy remains regression/bloom-filter scope rather than inverted-index storage fixture scope. Existing BE tests cover bloom-filter reader/writer primitives separately; this PR migrates the inverted-index storage paths. The Cloud schema-change transaction-conflict debugpoint remains regression-scope because it validates cloud schema-change job conflict handling rather than BE rowset/index storage behavior. The sparse-stats #64205 reproducer is kept as an intentional red BE UT and is excluded from the green storage/index verification command until the product fix lands.

Release note

None

Check List (For Author)

  • Test: Unit Test
    • PATH=/mnt/disk1/claude-max/ldb_toolchain16/bin:$PATH build-support/clang-format.sh
    • git diff --check
    • git diff --cached --check
    • env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantExprPushdownTest.*' (2 tests passed)
    • env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantDebugPointTest.*:IndexStorageVariantExprPushdownTest.*:IndexStorageVariantFieldPatternIndexTest.*:IndexStorageVariantLifecycleTest.*:IndexStorageVariantSchemaPatchTest.*:IndexStorageLifecycleTest.*:IndexStorageSchemaPatchTest.*-IndexStorageVariantLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated' (36 tests passed)
  • Behavior changed: No
  • Does this need documentation: No

### What problem does this PR solve?

Issue Number: N/A

Related PR: N/A

Problem Summary: This adds a focused BE unit-test fixture for storage index lifecycle coverage around inverted index probe events, patched tablet schemas, variant sparse/nested metadata, and COUNT_ON_INDEX no-need-read-data behavior. The tests cover index add/drop and build/drop on text and variant path indexes, missing required variant columns, V1/V2 index storage files, rowset map updates after schema patching, and red/green validation that COUNT_ON_INDEX reads only rows filtered by an applied inverted index. The implementation records index probe events for applied, fallback, and not-attempted column predicates, preserves existing SegmentIterator debug points, skips missing physical columns only when nullable/default columns make that valid, and resolves field_pattern variant index build/drop against materialized paths.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - `PATH=/tmp/codex-clang-format16:$PATH build-support/clang-format.sh`
    - `PATH=/tmp/codex-clang-format16:$PATH build-support/check-format.sh`
    - `git diff --check && git diff --cached --check`
    - `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageLifecycleTest.*:IndexStorageSchemaPatchTest.*'`
    - Attempted `env CLANG_TIDY_BINARY=/mnt/disk1/claude-max/ldb_toolchain20/bin/clang-tidy build-support/run-clang-tidy.sh --build-dir be/ut_build_ASAN`, but local clang-tidy could not analyze Doris headers due toolchain/PCH diagnostics (`stddef.h` not found from `slice.h` and existing `core/types.h` NOLINT parsing). A clang-tidy-16 probe also failed with incompatible PCH AST.
- Behavior changed: No
- Does this need documentation: No
@eldenmoon

Copy link
Copy Markdown
Member Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 29590 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit f9c66e15b7b8eda608d57d08bb031f6ca1bd61ad, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17590	4267	4223	4223
q2	q3	10791	1489	842	842
q4	4677	537	370	370
q5	7625	895	602	602
q6	185	185	145	145
q7	804	887	631	631
q8	9465	1518	1503	1503
q9	5952	4536	4539	4536
q10	6803	1870	1571	1571
q11	438	277	260	260
q12	627	474	301	301
q13	18111	3799	2755	2755
q14	283	260	244	244
q15	q16	829	815	715	715
q17	991	909	992	909
q18	6922	5907	5614	5614
q19	1331	1433	1040	1040
q20	550	419	268	268
q21	6699	2976	2743	2743
q22	476	386	318	318
Total cold run time: 101149 ms
Total hot run time: 29590 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	5384	5237	5097	5097
q2	q3	5091	5375	4675	4675
q4	2343	2400	1408	1408
q5	5252	4886	4850	4850
q6	269	202	143	143
q7	2090	1808	1581	1581
q8	2708	2335	2336	2335
q9	8163	7643	7607	7607
q10	4885	4757	4312	4312
q11	595	426	382	382
q12	775	793	538	538
q13	3111	3494	2803	2803
q14	285	308	252	252
q15	q16	699	721	632	632
q17	1317	1290	1290	1290
q18	7708	7162	6906	6906
q19	1124	1148	1103	1103
q20	2261	2273	1947	1947
q21	5676	4915	4698	4698
q22	544	453	424	424
Total cold run time: 60280 ms
Total hot run time: 52983 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 169390 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit f9c66e15b7b8eda608d57d08bb031f6ca1bd61ad, data reload: false

query5	4335	634	499	499
query6	453	202	183	183
query7	4814	573	303	303
query8	371	219	221	219
query9	8784	4020	4019	4019
query10	451	313	262	262
query11	5906	2372	2153	2153
query12	153	106	107	106
query13	1249	561	423	423
query14	6462	5458	5080	5080
query14_1	4417	4431	4423	4423
query15	206	194	178	178
query16	989	438	412	412
query17	935	700	570	570
query18	2453	479	340	340
query19	198	186	141	141
query20	110	107	117	107
query21	215	138	112	112
query22	13652	13558	13421	13421
query23	17417	16550	16237	16237
query23_1	16271	16352	16286	16286
query24	7640	1732	1318	1318
query24_1	1315	1310	1290	1290
query25	552	431	385	385
query26	1296	316	175	175
query27	2706	542	329	329
query28	4498	2030	2002	2002
query29	1090	622	504	504
query30	318	237	199	199
query31	1105	1078	955	955
query32	104	58	61	58
query33	506	312	244	244
query34	1236	1141	638	638
query35	748	790	684	684
query36	1374	1392	1266	1266
query37	157	104	90	90
query38	3218	3156	3019	3019
query39	930	923	904	904
query39_1	891	874	881	874
query40	222	129	101	101
query41	64	62	63	62
query42	98	102	102	102
query43	325	319	275	275
query44	
query45	197	185	182	182
query46	1069	1256	729	729
query47	2323	2354	2173	2173
query48	403	435	296	296
query49	635	470	353	353
query50	981	343	257	257
query51	4423	4369	4310	4310
query52	89	88	76	76
query53	247	270	199	199
query54	262	227	193	193
query55	77	77	77	77
query56	241	219	231	219
query57	1404	1406	1309	1309
query58	244	215	209	209
query59	1575	1650	1394	1394
query60	287	232	234	232
query61	159	160	154	154
query62	693	657	606	606
query63	243	194	191	191
query64	2590	846	689	689
query65	
query66	1817	486	361	361
query67	29789	29708	29700	29700
query68	
query69	433	308	278	278
query70	950	950	910	910
query71	309	233	222	222
query72	3178	2869	2549	2549
query73	851	756	422	422
query74	5109	4970	4761	4761
query75	2655	2575	2241	2241
query76	2333	1151	761	761
query77	345	388	281	281
query78	12531	12412	11911	11911
query79	1440	1041	758	758
query80	718	465	395	395
query81	476	272	238	238
query82	567	157	123	123
query83	354	279	247	247
query84	
query85	891	525	438	438
query86	412	291	285	285
query87	3434	3381	3166	3166
query88	3627	2731	2717	2717
query89	420	374	343	343
query90	1774	186	175	175
query91	175	196	140	140
query92	63	65	59	59
query93	1527	1444	829	829
query94	616	356	264	264
query95	682	377	361	361
query96	1102	793	340	340
query97	2691	2699	2572	2572
query98	214	211	205	205
query99	1131	1159	1055	1055
Total cold run time: 251438 ms
Total hot run time: 169390 ms

### What problem does this PR solve?

Issue Number: close apache#64205

Related PR: apache#64205

Problem Summary: Add a focused BE unit test that reproduces the variant sparse stats limit reader bug. The test writes a variant column with one materialized path, an exact sparse path v.b, and a hidden child path v.b.c that is omitted from sparse path statistics after the configured limit is reached. Reading v.b through an explicit path-column schema currently returns NULL for the row whose value only exists under b.c, exposing the missing hierarchical read behavior without applying the production fix.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - Ran Target system: Linux; Target arch: x86_64
Python 3.11.13
Check JAVA_HOME version
Apache Maven 3.9.12 (848fbb4bf2d427b72bdb2471c22fced7ebd9a7a1)
Maven home: /usr/local
Java version: 17.0.16, vendor: Oracle Corporation, runtime: /mnt/disk6/common/jdk-17.0.16
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.14.0-694.el9.x86_64", arch: "amd64", family: "unix"
cmake version 3.31.8

CMake suite maintained and supported by Kitware (kitware.com/cmake).
ccache version 4.5.1
Get params:
    PARALLEL            -- 39
    CLEAN               -- 0
    ENABLE_PCH          -- ON
    EXTRA_BE_MODULES    --

Build Backend UT
install datasketches-cpp to thirdparty path before build backend ut
Update datasketches-cpp submodule ...
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/contrib/datasketches-cpp/build/Release
Install the project...
-- Install configuration: "Release"
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/version.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/binomial_bounds.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/bounds_binomial_proportions.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/ceiling_power_of_2.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/common_defs.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/conditional_back_inserter.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/conditional_forward.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/count_zeros.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/inv_pow2_table.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/kolmogorov_smirnov_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/kolmogorov_smirnov.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/memory_operations.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/MurmurHash3.h
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/optional.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/quantiles_sorted_view_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/quantiles_sorted_view.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/serde.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/xxhash64.h
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/hll.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/AuxHashMap.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/CompositeInterpolationXTable.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/hll.private.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HllSketchImplFactory.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/CouponHashSet.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/CouponList.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/CubicInterpolation.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HarmonicNumbers.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/Hll4Array.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/Hll6Array.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/Hll8Array.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HllArray.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HllSketchImpl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HllUtil.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/coupon_iterator.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/RelativeErrorTables.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/AuxHashMap-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/CompositeInterpolationXTable-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/CouponHashSet-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/CouponList-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/CubicInterpolation-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HarmonicNumbers-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/Hll4Array-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/Hll6Array-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/Hll8Array-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HllArray-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HllSketch-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HllSketchImpl-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/HllUnion-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/coupon_iterator-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/RelativeErrorTables-internal.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/compression_data.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/cpc_common.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/cpc_compressor.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/cpc_compressor_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/cpc_confidence.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/cpc_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/cpc_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/cpc_union.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/cpc_union_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/cpc_util.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/icon_estimator.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/kxp_byte_lookup.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/u32_table.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/u32_table_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/kll_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/kll_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/kll_helper.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/kll_helper_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/frequent_items_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/frequent_items_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/reverse_purge_hash_map.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/reverse_purge_hash_map_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_union.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_union_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_intersection.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_intersection_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_a_not_b.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_a_not_b_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_jaccard_similarity.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_comparators.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_constants.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_helpers.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_update_sketch_base.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_update_sketch_base_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_union_base.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_union_base_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_intersection_base.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_intersection_base_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_set_difference_base.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_set_difference_base_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/theta_jaccard_similarity_base.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/bounds_on_ratios_in_sampled_sets.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/bounds_on_ratios_in_theta_sketched_sets.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/compact_theta_sketch_parser.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/compact_theta_sketch_parser_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/bit_packing.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/var_opt_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/var_opt_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/var_opt_union.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/var_opt_union_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/ebpps_sample.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/ebpps_sample_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/ebpps_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/ebpps_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tuple_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tuple_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tuple_union.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tuple_union_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tuple_intersection.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tuple_intersection_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tuple_a_not_b.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tuple_a_not_b_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tuple_jaccard_similarity.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/array_of_doubles_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/array_tuple_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/array_tuple_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/array_tuple_union.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/array_tuple_union_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/array_tuple_intersection.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/array_tuple_intersection_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/array_tuple_a_not_b.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/array_tuple_a_not_b_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/req_common.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/req_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/req_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/req_compactor.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/req_compactor_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/quantiles_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/quantiles_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/count_min.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/count_min_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/density_sketch.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/density_sketch_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tdigest.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/tdigest_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/bloom_filter.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/bloom_filter_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/bloom_filter_builder_impl.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/include/DataSketches/bit_array_ops.hpp
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/lib/DataSketches/cmake/DataSketches.cmake
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/lib/DataSketches/cmake/DataSketchesConfigVersion.cmake
-- Installing: /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/lib/DataSketches/cmake/DataSketchesConfig.cmake
Update apache-orc submodule ...
Update clucene submodule ...
-- Make program: /usr/bin/make
-- Use ccache: -DCMAKE_CXX_COMPILER_LAUNCHER=ccache and -DCMAKE_C_COMPILER_LAUNCHER=ccache
-- Extra cxx flags:
-- GLIBC_COMPATIBILITY is ON
-- USE_LIBCPP is OFF
-- USE_JEMALLOC is OFF
-- USE_UNWIND is ON
-- ENABLE_PCH is ON
-- USE_AVX2 is ON
-- Build type is ASAN_UT
-- Build target arch is x86_64
-- DORIS_HOME is /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework
-- THIRDPARTY_DIR is /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed
-- make test: ON
-- make benchmark: OFF
-- build fs benchmark tool: OFF
-- build task executor simulator: OFF
-- build file cache lru tool: OFF
-- build gensrc if necessary
make: Entering directory '/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc'
make -C script
make[1]: Entering directory '/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/script'
/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/script/gen_build_version.sh
make[1]: Leaving directory '/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/script'
make -C proto
make[1]: Entering directory '/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/proto'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/proto'
make -C thrift
make[1]: Entering directory '/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/thrift'
/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/thirdparty/installed/bin/thrift -I /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/thrift -I /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/thrift/../build//thrift/ --gen cpp:moveable_types,no_skeleton -out /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/thrift/../build//gen_cpp --allow-64bit-consts -strict /mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/thrift/Normalization.thrift
make[1]: Leaving directory '/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc/thrift'
make: Leaving directory '/mnt/disk1/claude-max/tmp/doris-variant-gtest-framework/gensrc'
-- Configuring incomplete, errors occurred!; expected failure before the apache#64205 fix: v.b values are scalar-0, scalar-1, scalar-2, scalar-3, NULL and do not include child-0.
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: Migrate variant array inverted index writer debug point coverage from the variant_p0 regression suite into the BE index storage test framework. The new test drives typed variant array rowset writes, verifies array writer field counts through a scoped debug point, covers null elements, empty arrays, null arrays, top-level null Variant rows, mixed typed JSON elements, and checks index file materialization across cumulative compaction. The shared index storage test utility now supports scoped debug points, array typed variant path templates, and direct Variant-column batches with shape validation for future typed Variant storage tests.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - ./run-be-ut.sh --run --filter='IndexStorageVariantDebugPointTest.*'
    - ./run-be-ut.sh --run --filter='IndexStorageLifecycleTest.*' (26/27 passed; IndexStorageLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated failed and reproduced in single-test rerun with unchanged failure)
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: Split Variant index storage lifecycle coverage out of the non-Variant index storage lifecycle test file so text/non-Variant and Variant storage cases can evolve independently. Add a storage-level migration for the variant_p0 multi-index compaction debug-point scenario by verifying that equality predicates on a predefined Variant string path choose the plain field-pattern index, not the parent, phrase, sibling, or array path indexes, before and after cumulative compaction.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - `PATH=/mnt/disk1/claude-max/ldb_toolchain16/bin:$PATH build-support/clang-format.sh`
    - `./run-be-ut.sh --run --filter='IndexStorageVariantLifecycleTest.VariantPathEqualityChoosesStringIndexAfterCompaction'`
    - `./run-be-ut.sh --run --filter='IndexStorageVariantLifecycleTest.*:IndexStorageVariantSchemaPatchTest.*-IndexStorageVariantLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated'`
    - `./run-be-ut.sh --run --filter='IndexStorageLifecycleTest.*:IndexStorageSchemaPatchTest.*'`
    - `./run-be-ut.sh --run --filter='IndexStorageVariantLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated'` (expected failure, reproduces hidden child loss before fix)
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: close #xxx

Related PR: #xxx

Problem Summary: Split pure index storage schema patch unit tests out of the lifecycle test files. The lifecycle files now focus on rowset write/read/index/compaction behavior, while text and variant schema patch construction checks live in dedicated files. This keeps future migrations from variant debug point and storage tests easier to place without mixing schema-only checks with lifecycle coverage.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - `PATH=/mnt/disk1/claude-max/ldb_toolchain16/bin:$PATH build-support/clang-format.sh`
    - `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageSchemaPatchTest.*:IndexStorageVariantSchemaPatchTest.*'`
    - `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantDebugPointTest.*:IndexStorageVariantLifecycleTest.*:IndexStorageVariantSchemaPatchTest.*:IndexStorageLifecycleTest.*:IndexStorageSchemaPatchTest.*-IndexStorageVariantLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated'`
    - Red test, expected failure retained: `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated'`
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: None

Related PR: apache#64205

Problem Summary: Add storage-level coverage for typed Variant field-pattern inverted indexes across cumulative and full compaction. The test writes typed glob predefined paths, verifies that an INT predicate uses only the matching field-pattern index before compaction, then reloads the compacted rowset and verifies the same index behavior after compaction. Shared Variant index assertion helpers are moved into the index storage UT utility layer so later Variant index storage cases can reuse them instead of duplicating probe-event scans.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - `PATH=/mnt/disk1/claude-max/ldb_toolchain16/bin:$PATH build-support/clang-format.sh`
    - `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantFieldPatternIndexTest.*'`
    - `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantDebugPointTest.*:IndexStorageVariantFieldPatternIndexTest.*:IndexStorageVariantLifecycleTest.*:IndexStorageVariantSchemaPatchTest.*:IndexStorageLifecycleTest.*:IndexStorageSchemaPatchTest.*-IndexStorageVariantLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated'`
    - Expected red test: `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated'` fails with `has_hidden_child` false.
- Behavior changed: No
- Does this need documentation: No
@eldenmoon

Copy link
Copy Markdown
Member Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 29853 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit fb0a773b162d1a64d74b5b0259d88d6a012c1564, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17876	4230	4205	4205
q2	q3	10743	1454	862	862
q4	4690	513	369	369
q5	7587	894	603	603
q6	188	182	142	142
q7	782	866	639	639
q8	9349	1669	1771	1669
q9	5998	4532	4565	4532
q10	6750	1837	1528	1528
q11	432	271	264	264
q12	634	453	300	300
q13	18134	3521	2795	2795
q14	264	269	246	246
q15	q16	824	774	715	715
q17	975	987	1000	987
q18	7035	5785	5702	5702
q19	1304	1346	1078	1078
q20	522	427	261	261
q21	6384	2903	2632	2632
q22	475	396	324	324
Total cold run time: 100946 ms
Total hot run time: 29853 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	5320	4883	4942	4883
q2	q3	4923	5328	4727	4727
q4	2165	2240	1423	1423
q5	4874	4909	4780	4780
q6	233	179	131	131
q7	1849	1776	1695	1695
q8	2451	2176	2170	2170
q9	8028	7801	7507	7507
q10	4756	4744	4215	4215
q11	561	431	353	353
q12	740	743	540	540
q13	3082	3400	2850	2850
q14	281	292	255	255
q15	q16	682	707	635	635
q17	1294	1277	1273	1273
q18	7672	6896	6887	6887
q19	1185	1078	1104	1078
q20	2213	2235	1935	1935
q21	5414	4732	4578	4578
q22	554	470	419	419
Total cold run time: 58277 ms
Total hot run time: 52334 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 169463 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit fb0a773b162d1a64d74b5b0259d88d6a012c1564, data reload: false

query5	4336	634	464	464
query6	445	206	188	188
query7	4807	597	313	313
query8	372	226	206	206
query9	8793	4131	4115	4115
query10	450	316	270	270
query11	5939	2337	2156	2156
query12	160	107	103	103
query13	1256	633	439	439
query14	6421	5394	5116	5116
query14_1	4416	4410	4420	4410
query15	206	202	194	194
query16	989	452	432	432
query17	964	732	607	607
query18	2470	486	366	366
query19	221	191	149	149
query20	111	113	108	108
query21	223	150	122	122
query22	13750	13589	13352	13352
query23	17373	16540	16272	16272
query23_1	16348	16288	16260	16260
query24	7558	1786	1336	1336
query24_1	1332	1319	1319	1319
query25	593	504	428	428
query26	1322	324	175	175
query27	2661	599	356	356
query28	4441	2022	2032	2022
query29	1108	651	511	511
query30	307	236	203	203
query31	1258	1093	961	961
query32	119	66	62	62
query33	538	343	267	267
query34	1187	1200	658	658
query35	743	776	688	688
query36	1367	1388	1244	1244
query37	159	101	90	90
query38	3205	3122	3047	3047
query39	945	921	909	909
query39_1	876	880	879	879
query40	218	130	102	102
query41	64	62	64	62
query42	98	93	94	93
query43	321	322	281	281
query44	
query45	192	184	178	178
query46	1086	1199	756	756
query47	2361	2391	2273	2273
query48	413	422	292	292
query49	628	466	348	348
query50	994	367	266	266
query51	4360	4309	4258	4258
query52	92	88	77	77
query53	242	265	194	194
query54	266	217	192	192
query55	80	76	69	69
query56	232	224	212	212
query57	1441	1381	1315	1315
query58	254	218	215	215
query59	1574	1672	1423	1423
query60	294	270	243	243
query61	188	152	160	152
query62	687	645	574	574
query63	228	183	190	183
query64	2594	793	615	615
query65	
query66	1815	463	340	340
query67	29940	29638	29465	29465
query68	
query69	416	295	265	265
query70	930	939	961	939
query71	289	227	209	209
query72	2962	2721	2420	2420
query73	834	756	444	444
query74	5192	4994	4798	4798
query75	2652	2602	2226	2226
query76	2357	1156	750	750
query77	349	381	298	298
query78	12592	12618	11933	11933
query79	1425	1037	737	737
query80	604	483	406	406
query81	450	294	255	255
query82	566	166	120	120
query83	354	273	259	259
query84	
query85	890	522	470	470
query86	365	306	291	291
query87	3396	3347	3219	3219
query88	3655	2769	2771	2769
query89	421	384	325	325
query90	1948	182	179	179
query91	176	158	140	140
query92	67	62	55	55
query93	1572	1428	885	885
query94	560	355	305	305
query95	702	379	359	359
query96	1069	804	370	370
query97	2720	2768	2550	2550
query98	213	227	202	202
query99	1162	1163	1026	1026
Total cold run time: 251753 ms
Total hot run time: 169463 ms

### What problem does this PR solve?

Issue Number: None

Related PR: apache#64205

Problem Summary: Extend the index storage unit-test fixture to pass common expression pushdown contexts into rowset readers, then add a separate Variant expression-pushdown test for IS NULL and IS NOT NULL over a field-pattern indexed typed path. This keeps expression-level index coverage separate from field-pattern column-predicate and compaction coverage, and lets future Variant expression tests reuse the same write/read/assert framework.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - `PATH=/mnt/disk1/claude-max/ldb_toolchain16/bin:$PATH build-support/clang-format.sh`
    - `git diff --cached --check`
    - `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantExprPushdownTest.*'`
    - `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantDebugPointTest.*:IndexStorageVariantExprPushdownTest.*:IndexStorageVariantFieldPatternIndexTest.*:IndexStorageVariantLifecycleTest.*:IndexStorageVariantSchemaPatchTest.*:IndexStorageLifecycleTest.*:IndexStorageSchemaPatchTest.*-IndexStorageVariantLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated'`
- Behavior changed: No
- Does this need documentation: No
### What problem does this PR solve?

Issue Number: None

Related PR: apache#64205

Problem Summary: Add storage-level unit coverage for Variant array_contains common expression pushdown over a field-pattern array inverted index. The test migrates the array_func.array_contains debugpoint coverage from variant_p0 into the index storage fixture by asserting the index bitmap cardinality, rows filtered by the inverted index, and returned rows without relying on SQL profile polling.

### Release note

None

### Check List (For Author)

- Test: Unit Test
    - `PATH=/mnt/disk1/claude-max/ldb_toolchain16/bin:$PATH build-support/clang-format.sh`
    - `git diff --check`
    - `git diff --cached --check`
    - `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantExprPushdownTest.*'`
    - `env DORIS_CLANG_HOME=/mnt/disk1/claude-max/ldb_toolchain20 DORIS_THIRDPARTY=/mnt/disk1/claude-max/tmp/doris/thirdparty ./run-be-ut.sh --run --filter='IndexStorageVariantDebugPointTest.*:IndexStorageVariantExprPushdownTest.*:IndexStorageVariantFieldPatternIndexTest.*:IndexStorageVariantLifecycleTest.*:IndexStorageVariantSchemaPatchTest.*:IndexStorageLifecycleTest.*:IndexStorageSchemaPatchTest.*-IndexStorageVariantLifecycleTest.ExactSparsePathReadsHiddenChildAfterSparseStatsLimitTruncated'`
- Behavior changed: No
- Does this need documentation: No
@eldenmoon eldenmoon changed the title [test](be) Add storage index lifecycle test fixture [test](be) Migrate variant index storage debugpoint tests Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants